home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #15
/
Monster Media Number 15 (Monster Media)(July 1996).ISO
/
cad
/
lasi512b.zip
/
LASIDRC.LHI
< prev
next >
Wrap
Text File
|
1996-04-04
|
27KB
|
605 lines
≡≡
Introduction
Introduction
LASIDRC Design Rule Check Utility
---------------------------------
The program LASIDRC.EXE is a design rule checking program that performs
various layout design rule checks by making 2-dimensional bitmaps of
drawing layers and then doing logical operations on the bitmaps. Some of
the main features of the program are:
■ This is a new 32-bit version of LASIDRC.EXE that will use extended
memory and should work with any drawing produced by LASI 5.1.
■ The setup of distances to be checked has been made more intuitively
obvious than it was with previous versions of LASIDRC.
■ LASIDRC reads a Design Rule Check file which contains parameters and
operators that perform one or more checks. You can write your own check
file, and devise any type of design rule checks that you may want,
within the limits of the available operations.
■ LASIDRC can find "near miss errors" where one area misses being to be
connected to another area in a drawing by a single smallest drawing
unit.
■ LASIDRC can be interrupted at any check within the processing of a
check file, the state will be saved, and checking will continue in the
area where it was suspended if LASIDRC is started again.
■ The checking results may be displayed on a monitor, may be stored in a
disk file, or may be printed on a line printer. Automatic or manual
hardcopies of the display may be made using the same hardcopy programs
that the LASI drawing program uses.
■ LASIDRC can now check for overlapping objects on the same or several
layers. This is valuable for checking for gross errors, and for looking
for multiple photographic exposures that could cause maskmaking errors.
When using LASIDRC you will soon learn that making logical design rule
checks is a world of its own. If you like mathematical games, you should
like designing tests and running LASIDRC.
Running LASIDRC
Running LASIDRC
To run LASIDRC you first need to write a Design Rule Check file (or just
check file for short). This file contains small "programs" that tell
LASIDRC what to do, and is explained in the Writing a Check File topic.
Make the drawing directory the default directory and type "LASIDRC".
LASIDRC will come up in a setup display, providing it finds the drawing
files: FORM.DBD, CELLS5.DBD and CONSTS5.DBD. It will also allocate memory
for LASI objects and its bitmaps. If any of this fails, it will tell you
so and will return to DOS.
When the Checking Setup is displayed, you can enter or change any
parameters by moving through the parameters using the mouse, or the up,
down, left, right or ENTER keys and then typing in they value. The values
will be changed if any characters are typed and the location is then
moved. You can step around and around until you have the parameters as
you want them. The parameters to set are as follows:
■ Name of Cell to DRC. This is the main cell you want to check. Note that
this also checks any lesser cells in the main cell.
■ Name of Check File. This is the name of the check file that LASIDRC
will use. It will always have the extension ".DRC", which will
automatically be added to the name. This may include a path.
■ Name of the Report File. This is an arbitrary name for the file where
you want the DRC results to be recorded as the program runs. This may
have any extension or path.
■ Report Destination. This allows you to print or save a summary of any
error flags that are found. The parameter must be one of the printers
"LPT1", "LPT2","LPT3","PRN" (=LPT1), "FILE" for the report file or
blank for no report. If left blank, the program pauses so that you can
read the error. If the report file is being made, it will be appended
and not rewritten each time the program is started. It should be erased
occasionally if it contains old information.
■ Starting Check Number. This is the test in the check file where you
want the checking to start. This allows you to skip over some tests.
■ Finishing Check Number. This is the last test you want to do. This
allows some trailing tests to be omitted.
■ Enable switches. There are two enables for the PAUSE and HCPY
operators. You can turn these operators on and off as you please
without editing the check file. If the PAUSE switch is set to "Y", or
the report destination is set to a printer, or the printer is not
available, Enable HCPY will not accept "Y".
■ HCPY Command Line. This is the same command line that you would put in
the "hcopy=" FORM.DBD file to make LASI drawing hardcopies. LASIDRC
uses this command to select the hardcopy printer. Since LASIDRC
displays only in 640x480 VGA mode do not set any of the SVGA or XVGA
parameters ("s" or "x") on the command line.
■ Resolution and Distance Parameters. The resolution and distance in the
check file may be overridden if you want. These values stay in place
until new RESOLUTION= or DISTANCE= parameters are encountered in the
check file in any of the following tests. Leaving these blank (press
the Delete key) causes them to default to the values in the check file.
The Distance is always an integral multiple of the Resolution.
■ Starting Point. You may start checking areas anywhere by writing the
bottom-left coordinates in the setup. This allows you to go to an
certain area in a cell without doing all the previous areas. Leaving
these parameters blank causes them to be set to the bottom-left corner
of the cell.
The setup is slightly "smart"; it checks and adjusts parameters to
conform to LASIDRC's checking rules. Units are automatically added to any
dimensions. You will also notice that where "Y" or "N" is wanted,
anything but "Y" will set "N".
To start checking, press ALT-G or click "Go". Once you start checking,
the parameters are saved in the LASIDRC.SET file and are returned when
LASIDRC is run again.
As LASIDRC runs, a short message and the current operation is displayed.
This moves up and down the screen as a screen saver feature.
When LASIDRC is running, you can get a status display by pressing the
SPACE bar. Checking resumes automatically after a few seconds.
You may ABORT checking by pressing ESC. You will go back to the Checking
Setup display. When this is done, the last area position and the check
number will be saved in the setup. If you start LASIDRC again this
information will be restored.
If you want to reset the Resolution, Distance and Starting Point, press
ALT-I or click "Init". You would normally use this if you go to another
check and start at the beginning. If you don't initialize, the results
will be unpredictable.
Press ALT-Q or click "Quit" to exit from the Checking Setup to DOS.
Note: There may be a short delay if SPACE or ESC is pressed, be patient.
Pressing ALT-R or clicking "Read" in setup will read the contents of the
check file as it is seen by LASIDRC. That is, the defaults for parameters
will be listed and any comments or operators that have been disabled by
making them into comments will not be shown.
Pressing ALT-D or clicking "DOS" in setup will shell to DOS. You can run
your favorite editor to make changes to the check file. Once in a while
there will not be enough contiguous memory available to run a program; in
that case you need to exit LASIDRC and go back to DOS to do any editing.
Pressing ALT-M or clicking "Mem" will give a quick estimate of available
memory.
If a check file is read completely, the program will terminate normally
and go back to DOS. Certain setup parameters will be set to their default
values.
Writing a Check File
Check File Format
A check file consists of one or more test sequences or checks arranged in
blocks that contain parameters and operators. Each block starts with a
TITLE parameter and is ended with an OPERATORS parameter. The OPERATORS
parameter is always followed by a set of OPERATORS that are enclosed in
brace characters "{" and "}".
≡≡17
Characters may be upper or lowercase. The format is as follows:
TITLE=aaaa<nl> (40 char. max.) []=optional
[RESOLUTION=nnnn<nl>] (in physical units) <nl>=newline (CR-LF)
[DISTANCE=nnnn<nl>] (in physical units)
[LOCATION=xxxx,yyyy<nl>] (in physical units)
OPERATORS=<nl>
{<nl>
[OPERATOR<nl>]
.
.
.
}<nl>
TITLE=bbbb<nl>
etc.
Check Parameters:
"TITLE=" is the name of a particular test, and MUST be present. If no new
title is read, the check file is considered finished.
"RESOLUTION=" is the smallest physical size unit that you want to check
in a cell. This will be snapped to multiples of the basic units used in
the drawing. A Resolution unit corresponds to 2x2 bits in a bitmap.
Making this larger speeds up checking, but, details smaller than this
number may be lost. This defaults to the previous setting if omitted.
"DISTANCE=" is the physical distance by which bitmaps will be expanded
when spacing checks are being done. It also affects the position of the
areas being checked. This defaults to the previous setting if omitted.
"LOCATION=" sets the point on a cell of where to start checking. This is
the bottom-left corner of the area to be scanned. This does not default
to any previous values.
"OPERATORS=" begins the sequence of operator mnemonics that do the actual
checking. The block of operators always starts with "{" and ends with
"}". Each operator is written on a new line (CR-LF) and may contain
arguments separated by a comma ",". Operators are read character by
character starting after "=". The right brace "}" terminates the
operations and the present check. There is space for a maximum of 50
operators in the sequence.
The variables above are recognized by only their first two characters and
may be upper or lower case. For example, "op=" is equivalent to
"OPERATORS=".
A semicolon may be added to an operator line, which has the effect of
making everything to the right a comment. You may "turn off" and operator
by putting a ";" as the first character in the line. This lets you leave
temporary operators in place in the file while you are working out a
test.
Working Maps
The program maintains several internal 640x640 bitmaps. Only two are
available to the user. These are the R (results) and S (secondary) maps.
All tests are done by making and moving layer maps into the R and S
working maps, where the various operators can work on them.
≡≡11
R and S maps are arranged in a 2-map "stack" as shown below:
PUSH layer map ────┐
┌─────────┐
│ │ R │<─┐<── R Operator
Map Stack ├─│───────┤ │
│ S │──┴─── RS Operator
└─────────┘
To do any operations on maps you first push a layer map onto the map
stack. When a map is pushed into R, the previous contents of R are first
pushed into S.
Certain operators work with the R map and some work with both the R and S
maps. The results are always placed in the R map.
Operators
MAP,layer
This creates a layer map file on the hard disk, which may be retrieved
by other operators. Layer is a number from 0 to 64.
Layer 0 is a special layer, will store the R map for later use at any
stage of a checking sequence.
You must ALWAYS use the MAP operator to generate a layer map if you are
going to use that layer map later.
PUSH,layer
Retrieves a layer map from the hard disk and pushes the map onto the
map stack. The contents of the R map are moved to the S map. The
contents of the S map are lost. PUSH,0 retrieves and pushes a MAP,0
that may have been previously stored.
NOTR, ANDRS, ORRS, XORRS
These are the logical operators that do just what they indicate. The
results are placed in the R map and the S map remains unchanged.
SETR,CLRR
These are rarely used operators that set all bits of R to "1" or "0"
respectively.
DBLR
This doubles the bits in X and Y directions so that single bits may be
displayed better. This is used automatically by EXPR (below).
EXPR[,offset]
This is the single map expand operator. It performs an iterative
octagonal expansion (see below) on the R map. Each iteration expands
the pattern by ONE RESOLUTION UNIT. The results are placed in the R map
and the original R map is lost.
The results represent a pattern produced by single "0s" in the map as
the "1s" merge with each expansion pass.
The optional offset is a correction that may be used if found
necessary. The offset is the number of iterations (or resolution units)
to be subtracted from the expansion so that the distance parameter
gives the correct results.
EXPRS[,offset]
This expands the R and S maps using an iterative octagonal expansion,
and places the results in the R map. Each iteration is one resolution
unit. The original R and S maps are lost. Since there are two separate
maps, the result is the intersection of the maps as they expand.
JMPR0
This is a conditional branching operator that checks if the R map is
all "0s". If it is, the rest of the operators are skipped and checking
jumps to the next drawing area. If not, the sequence of operators
continues. This operator lets you cancel further operations if a layer
map contains no patterns of objects to be checked.
JMPR1
This is a conditional branching operator that checks if the R map is
all "1s". If it is, the rest of the operators are skipped and checking
jumps to the next drawing area. If not, the sequence of operators
continues. This operator lets you cancel further operations if a layer
map is completely filled by objects to be checked.
TESTR
This is a conditional branching operator that checks if the R map
contains any "1s". If there are any "1s", the location of the area
being checked is written to the report destination, the error flag
count is incremented and the sequence of operators continues. If the R
map is all "0s", the rest of the operators are skipped and checking
jumps to the next drawing area. TESTR is used to test for final results
after the sequence of map operations has been done.
DSPR,color index,sparse modulus
This displays the R map as a rectangular pattern on the monitor screen.
The color index is the usual integer (0 to 15) used by the PC video to
set a color: 0=black, 1= blue, 2=green, etc.
The sparse modulus is a integer that allows only those pixels whose X
and Y position divided by the modulus that leaves a remainder of 0 to
be displayed. This "thins out" the filled patterns to give a better
display or print. For all pixels, the modulus is 1; for every other
pixel, the modulus is 2, etc.
DSP,map,color index,sparse modulus
This is the same as DSPR except it displays a stored map. Use this to
display the layers as a background when displaying any results.
PAUSE
This produces a pause after a display so that you can examine the
screen. Without it, LASIDRC would go on to the next area to be checked.
This is enabled by the setup switch.
HCPY
This calls the hardcopier automatically to produce a picture of the
screen after any results are displayed. If the report destination is
set to any printer, this is blocked, since it would disrupt the report
printing by putting maps in the printout. This must be enabled by the
Enable HCPY setup switch. If no printer is available Enable HCPY will
not accept "N".
OVRLAP,layer[,up to 8 layers separated by commas]
This calls the overlap checking function. When overlaps are checked,
objects (boxes, poly and paths) that coincide at any points are marked.
The objects can be on one or more of up to 8 layers, with each layer
considered as the SAME layer.
The results are placed in the R map. The map of the layers checked for
overlap is stored as the "0 Layer" map, so that the map can be
displayed by a DSP,0 operator.
As with other checks, the RESOLUTION parameter determines how finely
the overlap bitmaps are constructed. The DISTANCE parameter has no
effect.
Overlap checking is different from all other operations because it
tests for coincidence WITHIN a single layer. It however does NOT check
if the SAME object intersects itself. This can happen on poly or paths
that fold back on themselves. The algorithm that LASIDRC uses to make
bitmaps is the same as the LASI drawing program uses to fill. This
algorithm does not fill singly folded areas. These areas may be easily
spotted in a drawing.
Octagonal Expansion
When an expansion is done, an iterative process is used to enlarge the
map patterns. With each pass the pattern is enlarged by one bit by
shifting it in each of the four orthogonal directions (+x,-x,+y,-y). The
pattern is also shifted diagonally, on the average, .707 of the time.
This produces an octagonal pattern if the original pattern is a single
point. The expansion is a first order approximation to a discrete
circular expansion process. Possibly in the future, higher order terms
will be added to smooth the expanded pattern.
≡≡11
* * * * *
Octagonal single point expansion * * * * * * *
after four passes * * * * * * * * *
* * * * * * * * *
* * * * X * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
Setting Parameters
Optimizing Parameters
Resolution can be made as small as 1 basic unit used in a drawing.
Making the Resolution larger allows checking to be done much faster
because larger pieces of a drawing can be checked at a time and less
iterations are necessary when checking. The time required to check is
roughly in inverse proportion to the 3rd power of the Resolution. That
is, if you halve your Resolution checking will run about 8 times faster.
Unless you have a very fast computer, the highest Resolution is best used
on small cells or for checks that involve small dimensions. For example,
contact coverage or checking for small gaps in metal runs might run at
the smallest Resolution.
Making Resolution too large can cause errors to be missed because details
cannot be resolved smaller than that size and roundoffs may occur.
However, scanning for gross errors can quickly be done using a larger
Resolution.
The Distance parameter will affect the test time, since each iteration of
an expansion takes about the same amount of time.
Distance will also affect the size and position of the areas being
checked. Distance can be set to 0, but a small correction, depending on
the Resolution, will be made so that checked areas will overlap slightly.
Checking Spacing
As stated before, LASIDRC works by expanding bitmap areas, and
determining if gaps merge and flagging the merged bits. When checking
gaps, LASIDRC should always find and flag gaps LESS THAN or EQUAL to the
Distance. If you are checking spacing set the Distance so that it will
FAIL.
For example, let us say that you want to determine if spacing is less
than 10.0um between certain areas. A 9.5um Distance and a Resolution of
.5um should find any gaps less than or equal to 9.5um i.e., a 10.0um
distance SHOULD pass.
≡≡8
Resolution=0.5
▒▒▒▒ │ ▒▒▒▒
▒▒▒▒<──── Will be Flagged ────><─┴─>▒▒▒▒
▒▒▒▒<───── May be Flagged ───────> ▒▒▒▒
▒▒▒▒<──────── Distance ───────>│ ▒▒▒▒
0 9.5 10.0
<--------- Spacing Gap -------->
Not all gaps between 9.5um and 10.0um will pass. For 45 deg. diagonal
distances, there can be an uncertainty that is less than +/- 1/2 the
Resolution, due partly to the way that LASIDRC works and due partly to
numerical roundoff problems. For angles that are in a range centered
around odd multiples of 22.5 deg. ( 22.5, 67.5, etc.) there is an
exaggeration of the expansion distance. This may flag oddly shaped
objects. Since expands areas using an octogonal pattern, these
exaggerations correspond to the octogon vertex peaks, or about an 8
percent exaggeration at most.
Since LASIDRC looks for single bits when doing a single layer expansion,
once in a while on odd shapes, the map can produce single bit extensions
or notches. LASIDRC will find these and will flag them, even though they
are an artifact. You should examine these and see if there really is
anything wrong. In fact, the way that LASIDRC works often picks out
patterns that are not good layout practice because a pattern generator
may also have similar problems.
LASIDRC works in such a way that sharp corners tend to be rounded, just
as actual photomasking and etching might do. Keep this in mind when
setting the Distance parameter. For example, the distance between two
adjacent corners will be seen by LASIDRC as a little more than the actual
tip to tip distance.
The method by which LASIDRC works is sensitive to gross errors which are
well beyond the actual flagging threshold. It is virtually impossible for
LASIDRC to miss these.
Checking Widths
To check widths with LASIDRC (a metal run width for example), you first
make a bitmap of a layer and then "NOT" the bitmap. The bitmap then has a
gap where there would have be a filled area. You apply the same expansion
as you would to check the gap between filled areas. You must however keep
in mind that you still want a distance that will FAIL.
≡≡8
0 9.5 10.0
<------- Width (gap)-------->
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Inverted ▒▒▒▒ ▒▒▒▒▒▒▒▒▒
<────── Distance ──────>│
<── Will be Flagged ───><─┬─>│
Resolution=0.5
Again in this case, you would set the Distance to 9.5um to fail a gap
less than or equal to that value, or equivalently, pass a width greater
than that value, or 10.0um.
The width that is being checked might be the result of several logical
bitmap operations. An example is where you might want to check if metal
covers a contact area sufficiently. You would XOR one layer to the other
and then check the width of the result. The same rules apply as with a
single layer.
Near Miss Errors
LASIDRC will find "near miss" errors. A near miss is where drawing areas
do not touch by a one or a few basic units. To find these, set the
Resolution to the smallest physical distance (1 basic drawing unit), and
set the Distance to some value large enough to find all small gaps, but
small enough to let LASIDRC run quickly.
Hint: If looking for small gaps, it is often much faster to check small
individual cells first, so that you know that they are OK. Small cells
are often drawn to higher resolution, while larger cells are often
drawn to a coarser grid. Using the LASI "Snap" command can eliminate
small gaps and save DRC time.
An Example
An Example
If included in the LASI files, the tutorial layout (compressed in
TUTOR.ZIP) contains a sample check file named TUTOR.DRC. This has been
written to work with the demonstration, but can serve as an example of
how to write a file. Examining this file should make the preceding
information much clearer.
You should run LASIDRC on the OPAMP cell using TUTOR.DRC and see the
results. LASIDRC will flag many things in the cell in the different
tests. Some will be real errors and some will be sloppy layout techniques
done by the author.
Disclaimer
Disclaimer
The LASIDRC.EXE program is furnished on an "as is" basis. LASIDRC will
make a "best effort" to call to attention any possible layout errors.
Experience should confirm that it doesn't miss much. However, the author
or anyone distributing the program cannot assume responsibility for how
the program is used, how it is programmed, or for the results of its use.
The program cannot be absolutely guaranteed to find all instances in a
layout that may result in incorrect function of an integrated circuit or
other device. LASIDRC is to be considered as a valuable aid to actual
visual inspection and the users own knowledge.
Parameter Line Editor
Parameter Line Editor
LASIDRC now uses a simple line editor that resembles the editor used with
Windows. The editor operates as follows:
■ To move from parameter to parameter, press the UP/DOWN ARROW keys,
(SHIFT)TAB, or click the mouse on a parameter.
■ Press PGUP/PGDN to move to the first or last parameter.
■ Press LEFT/RIGHT ARROW to move the text cursor left or right.
■ Press HOME/END to move the cursor to the beginning or end of a line.
■ Press BACKSPACE to erase a character to the left of the cursor.
■ Press DELETE to erase the character to the right of the cursor.
■ Press CTRL-BACKSPACE to completely erase a text line.
■ When you first select a parameter, typing any printable character other
than SPACE or LEFT/RIGHT ARROW will replace the whole text line.
■ If you make a mistake press ESC to restore the original text.